package com.cy.java.oop;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class ObjectTests {
    public static void main(String[] args)
            throws Throwable {
        Object o1=new Object(); //传统方法
        //1、通过类名.class的方式
        Class<?> c1 = Object.class;
        //2、通过对象实例.getClass方式
        Class<?> c2 = o1.getClass();
        //3、通过Class.forName()方法 字节码对象
        Class<?> c3 = Class.forName("java.lang.Object");
        System.out.println(c1==c2);
        System.out.println(c2==c3);
        //通过字节码对象获取无参构造方法对象
        Constructor<?> constructor =
                c3.getConstructor();
        //通过构造方法构建类的实例对象
        Object o2 = constructor.newInstance(); //反射的方法
        //更简单的写法：
        Object o3 = c3.newInstance();
    }
}
